There are many reasons to verify program integrity. Security is often one of the more significant reasons. It may be desirable to have some assurance that boot programs are authorized and intact before they are executed. Similarly, e-commerce routines may have access to account information and passwords, and as such, it may be desirable to have an assurance that the program that is operating is approved by parties with a financial stake in a transaction.
Many techniques have been described that validate the integrity of code before it is executed. Most often, a trusted routine in the boot program or operating system verifies a hash or other digital signature of a program or utility immediately prior to its execution. However, virtual memory paging and multiprocessing, i.e. execution of more than one program at a time, make verification of a running program difficult, if not impossible.